Stahování souborů z webů přes příkazovou řádku není nejpohodlnější, přepsat URL do konzole chvíli zabere. Pokud ale je potřeba souborů stáhnout stovky nebo tisíce, automatizovat tuto úlohu už se může vyplatit.
Pro Linux i Windows
V Linuxu je wget již od instalace a stačí jej směle používat, pro Windows je potřeba jej stáhnout. To lze například na stránkách eternallybored.org, nebo pomocí Chocolatey.
Dokumentace je na stránkách gnu.org a měla by být stejná jak pro Windows, tak Linux.
Ukázky
Následující příkazy ukazují běžné a časté použití programu wget, které se může hodit. Je to ale jen malý zlomek toho, co vše wget dokáže.
Všechny skripty lze spustit, URL adresy existují a obsahují testovací data
Jednoduché stažení souboru
# Stáhne soubor a uloží do aktuálního adresáře wget "http://testdata.kutac.cz/wget/readme.md" # --output-document, --directory-prefix mohou obsahovat absolutní adresy # Stáhne soubor, ale uloží s jiným jménem wget --output-document="readme.txt" http://testdata.kutac.cz/wget/readme.md # Stáhne a uloží do složky wget --directory-prefix="subfolder" http://testdata.kutac.cz/wget/readme.md
Pokračovat ve stahování a omezení rychlosti
wget umožňuje pokračovat ve stahování souborů, když došlo k přerušení. Pro lepší názornost je ještě omezená maximální rychlost stahování.
# Začne stahovat maximálná rychlostí 20KB/s wget --limit-rate="20k" http://testdata.kutac.cz/wget/article_imgs.zip # Pokračování přerušeného stahování wget --continue --limit-rate="20k" http://testdata.kutac.cz/wget/article_imgs.zip
Stahování podle seznamu odkazů
# Stáhne všechny soubory specifikovány v souboru # Pokud je soubor takto na webu, bude stažen také wget --directory-prefix="imgs" --input-file http://testdata.kutac.cz/wget/list.txt
Stahování pouze při změně souborů
Někdy je dobré stáhnout soubor pouze, pokud se od posledního stáhnutí změnil. Třeba pokud má několik GB, je zbytečné jej stahovat znova, nebo pokud stahujeme 1000 souborů, ale změnily se jen 2.
# Stáhne soubor pouze, pokud se od posledního stažení změnil # Stačí zkusit pustit příkaz 2x za sebou, server vrátí kód 304 wget --timestamping http://testdata.kutac.cz/wget/timestamping.txt
Zrcadlení a rekurzivní stahování
Wget dokáže zrcadlit celý web, nebo jen část. Pokud web má být možné používat poté offline, hodí se, aby také jednotlivé odkazy byly převedeny na lokální. I to wget umí.
# --mirror - zrcadlí a stahuje i závislosti # --convert-links - převede odkazy na lokální, aby vše fungovalo i offline # --no-parent - nestahuje nic z nadřazených složek # --execute="robots = off" ignoruje soubor robots.txt wget --execute="robots = off" --mirror --convert-links --no-parent http://datauri.kutac.cz/
Stáhnutí všech souborů rekurzivně
# --recursive - prohledává i podsložky # --accept - stahuje pouze soubory s danými příponami # --exlude-directories dané složky vynechá # wget --no-parent --accept "txt,md" ‐‐exclude-directories "domains" --recursive http://testdata.kutac.cz/
Opakování při chybě
# wget uskuteční 10 pokusů pro stažení souboru # Defaultní hodnota --tries je 20 wget --tries=10 --wait=1 http://testdata.kutac.cz/wget/unavailable.txt
Stáhnutí souborů ze stránek chráněných heslem
Zde se jedná pouze o HTTP Basic auth, nikoli o běžné přihlašování pomocí formuláře. I toto wget zvládne.
wget ‐‐http-user="admin" ‐‐http-password="Pa55w0rd" http://testdata.kutac.cz/wget/restricted.txt
Případně vložit jméno a heslo přímo do URL:
wget http://admin:Pa55w0rd@testdata.kutac.cz/wget/restricted.txt
Wget toho umí mnohem více, zde je pouze výpis co se může hodit častěji.
K tomuto článku již není možné přidávat další komentáře